/**
 * 系统文件实体定义
 * @description 定义系统文件的数据结构和属性
 */
export interface SysFile extends Record<string, unknown> {
  id: number;
  user_id: number;
  file_name: string;
  file_mime: string;
  file_type: number;
  file_size: number;
  file_ext: string;
  file_path: string;
  file_thumb: string;
  store_type: number;
  time: number;
  update_time: number;
  disabled: number;
}

/**
 * 创建系统文件DTO
 * @description 用于创建文件记录的数据传输对象
 */
export type CreateSysFileDto = Omit<SysFile, 'id'>;

/**
 * 更新系统文件DTO
 * @description 用于更新文件记录的数据传输对象
 */
export type UpdateSysFileDto = Partial<Omit<SysFile, 'id' | 'time'>>;

/**
 * 系统文件查询DTO
 * @description 用于查询文件的条件参数
 */
export interface SysFileQueryDto extends Record<string, unknown> {
  user_id?: number;
  file_name?: string;
  file_type?: number;
  file_ext?: string;
  store_type?: number;
  disabled?: number;
}

/**
 * 文件上传DTO
 * @description 用于文件上传的数据传输对象
 */
export interface FileUploadDto {
  user_id: number;
  file_name: string;
  file_mime: string;
  file_type: number;
  file_size: number;
  file_ext: string;
  store_type?: number;
}

/**
 * 文件上传响应DTO
 * @description 文件上传成功后的响应数据
 */
export interface FileUploadResponseDto {
  id: number;
  file_name: string;
  file_path: string;
  file_thumb?: string;
  file_size: number;
  file_url: string;
}

/**
 * 文件批量删除DTO
 * @description 用于批量删除文件的ID数组
 */
export interface FileBatchDeleteDto {
  ids: number[];
}

/**
 * 文件统计DTO
 * @description 文件相关的统计数据
 */
export interface FileStatisticsDto {
  total_files: number;
  total_size: number;
  file_type_stats: {
    file_type: number;
    count: number;
    size: number;
  }[];
}

/**
 * 文件存储类型枚举
 * @description 定义文件存储的类型
 */
export enum FileStoreType {
  FILE_SYSTEM = 1,
  MINIO = 2,
}

/**
 * 文件类型枚举
 * @description 定义文件的分类类型
 */
export enum FileType {
  IMAGE = 1,
  DOCUMENT = 2,
  VIDEO = 3,
  AUDIO = 4,
  ARCHIVE = 5,
  OTHER = 6,
}
